From: Jonas Ã…dahl Date: Wed, 9 Dec 2020 18:02:55 +0000 (+0100) Subject: st/viewport: Don't trigger relayout when picking X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~616^2^2~690 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=4e57119f40259ab5ecfd013256ac9fc81f234646;p=gnome-shell.git st/viewport: Don't trigger relayout when picking Calling clutter_actor_get_allocation_box() might still implicitly trigger a full relayout, which has many side effects not expected to occur during picking. Avoid a particular case which caused a reentry issue by using the current allocation instead of forcing a relayout when picking in StViewport. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/1436 Part-of: --- diff --git a/src/st/st-viewport.c b/src/st/st-viewport.c index 3ed2d89e1..c663ae4cd 100644 --- a/src/st/st-viewport.c +++ b/src/st/st-viewport.c @@ -431,7 +431,7 @@ st_viewport_pick (ClutterActor *actor, StViewportPrivate *priv = st_viewport_get_instance_private (viewport); StThemeNode *theme_node = st_widget_get_theme_node (ST_WIDGET (actor)); double x, y; - ClutterActorBox allocation_box; + g_autoptr (ClutterActorBox) allocation_box = NULL; ClutterActorBox content_box; ClutterActor *child; @@ -440,8 +440,8 @@ st_viewport_pick (ClutterActor *actor, if (clutter_actor_get_n_children (actor) == 0) return; - clutter_actor_get_allocation_box (actor, &allocation_box); - st_theme_node_get_content_box (theme_node, &allocation_box, &content_box); + g_object_get (actor, "allocation", &allocation_box, NULL); + st_theme_node_get_content_box (theme_node, allocation_box, &content_box); get_border_paint_offsets (viewport, &x, &y);